/**
 * 给定一个数组，定义一个操作：
 * 任取Ai，加K
 * 问任意操作后数组中最多能有多少个相同元素
 * 若 Ai + uK = Aj + vK
 * 则 Ai - Aj = (v - u)K
 * 即可Ai与Aj同余K，因此取余数即可
 */
#include <bits/stdc++.h>
using namespace std;

#include <bits/extc++.h>
using namespace __gnu_pbds;

using llt = long long;
using vi  =vector<int>;
using pii = pair<int, int>;
using vvi = vector<vi>;
using vpii = vector<pii>;

int N, K;
vector<llt> A;

int proc(){
    map<llt, int> ss;
    for(auto i : A) ++ss[i % K];
    int ans = 0;
    for(const auto & p : ss) ans = max(ans, p.second);
    return ans;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);
    int nofkase = 1;
    // cin >> nofkase;
    while(nofkase--){
        cin >> N >> K;
        A.assign(N, {});
        for(auto & i : A) cin >> i;
        cout << proc() << "\n";
    }
    return 0;
}